import { TextDefault, FontFamilyDict, FONT_SIZE_MAX, FONT_SIZE_MIN, TableDefault } from './types'

/** 公共配置项 */
export default {
  /** 页面尺寸 */
  page: {
    /** 默认宽度 (px) */
    width: 800,
    /** 默认高度 (px) */
    height: 1132,
    /** 页面上下边距 (px) */
    spacing: 16
  },

  /** 骑缝 */
  riding: {
    /** 骑缝区域默认宽度 (px) */
    areaDefaultWidth: 160,

    /** 骑缝控件默认宽度 (px)，骑缝区域收拢或控件完成模式 */
    widgetDefaultWidth: 50,

    /** 骑缝控件最小宽度 (px)，骑缝区域收拢或控件完成模式 */
    widgetMinWidth: 20
  },

  /** 加载中图片，避免 VueLazyload 全局设置覆盖 */
  loadingImage: '',

  /** 工具按钮区域宽度 (px) */
  toolsWrapperWidth: 48,

  /** 虚拟滚动阈值，页面数小于该值则不启用虚拟滚动 */
  virtualScrollThreshold: 4,

  /** 虚拟滚动间距 (px) ，可见范围之外开启虚拟滚动的距离 */
  virtualScrollSpacing: 800,

  /** 滚动按钮可见距离 (px) */
  scrollButtonVisibleDistance: 200,

  /** 平滑滚动距离 (px)，超过距离则不平滑滚动，默认 5 页距离 */
  scrollSmoothDistance: 1132 * 5,

  /**
   * 控件按 y 坐标排序容差
   * 在容差范围内的控件认定为一行
   */
  widgetSortAbsolute: 15,

  /** 工具栏缩放级别列表 */
  zoomLevels: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2],

  /** 字体列表 */
  fontFamilies: Array.from(FontFamilyDict),

  /** 字体大小列表 */
  fontSizes: Array.from(new Array(FONT_SIZE_MAX - FONT_SIZE_MIN + 1), (item, index) => index + FONT_SIZE_MIN).filter(
    // 排除的字号
    size => ![9, 11].includes(size)
  ),

  /** 文本框默认 */
  textDefault: TextDefault,

  /** 单项、复选框组 - 选项 */
  checkOption: {
    /** 宽度 (px) */
    width: 16,
    /** 高度 (px) */
    height: 16,
    /** 间距 (px) */
    space: 8,
    /** 最大长度 */
    maxLength: 100,
    /** 最大数量 */
    max: 100
  },

  /** 下拉菜单选项 */
  selectOption: {
    /** 最大长度 */
    maxLength: 100,
    /** 最大数量 */
    max: 100
  },

  /** 表格控件选项 */
  tableOption: {
    /** 行高最小值 (px) */
    rowHeightMin: 16,

    /** 行高最大值 (px) */
    rowHeightMax: 100,

    /** 列宽最小值 (px) */
    colWidthMin: 32,

    /** 行数最大值 */
    rowsMax: 100,

    /** 列数最大值 */
    colsMax: 100,

    /** 单元格输入最大长度 */
    cellValueMaxLength: 300,

    /** 表格项名称最大长度 */
    fieldLabelMaxLength: 50,

    /** 表格项提示文本最大长度 */
    fieldPlaceholderMaxLength: 50
  },

  /** 表格控件默认配置  */
  tableDefault: TableDefault
}
